tôi có các mô hình sau:Làm thế nào để thiết lập mối quan hệ một đến nhiều?
User (id, name, network_id)
Network(id, title)
Những loại mô hình Rails assoc sao tôi cần phải thêm để tôi có thể làm:
@user.network.title
@network.users
Cảm ơn
tôi có các mô hình sau:Làm thế nào để thiết lập mối quan hệ một đến nhiều?
User (id, name, network_id)
Network(id, title)
Những loại mô hình Rails assoc sao tôi cần phải thêm để tôi có thể làm:
@user.network.title
@network.users
Cảm ơn
nên mạng has_may
người sử dụng và người sử dụng belongs_to
mạng.
Chỉ cần thêm network_id
vào bảng người dùng nếu bạn vẫn chưa làm và vì đó là foreign_key
đáng để lập chỉ mục nó.
rails generate migration AddNetworkIdToUsers
class AddNetworkIdToUsers < ActiveRecord::Migration
def change
add_column :users, :network_id, :integer
add_index :users, :network_id
end
end
Trong mô hình mạng làm
class Network < ActiveRecord::Base
has_many :users
end
trong mô hình sử dụng:
class User < ActiveRecord::Base
belongs_to :network
end
Theo cơ sở dữ liệu thiết lập của bạn, bạn chỉ cần thêm dòng sau dòng vào các kiểu máy của bạn:
class User < ActiveRecord::Base
belongs_to :network
# Rest of your code here
end
class Network < ActiveRecord::Base
has_many :users
# Rest of your code here
end
Trong trường hợp bạn có thiết lập không có network_id, bạn nên dùng câu trả lời daniels.
Đây là cách của tôi: chạy:
$rails generate migration AddNetworkIdToUsers
sau đó cấu hình tập tin chuyển đổi:
class AddNetworkIdToUsers < ActiveRecord::Migration[5.1]
def up
add_column :users, :network_id, :integer
add_index :users, :network_id
end
def down
remove_index :users, :network_id
remove_column :users, :network_id
end
end
Không cần di chuyển, NETWORK_ID là (theo câu hỏi) đã có trong bảng – klaffenboeck
đúng là :). chỉ dành cho người đọc trong tương lai để họ biết cách thêm id. – daniel
điểm hợp lệ, đã đồng ý. Upvoted bạn một lần nữa và xin lỗi về điều đó :-) – klaffenboeck