列表中的用户模型 Rails - 如何到达?
User Model with Listings Rails - How to reach?
我有一个船型及其型号,例如品牌、型号和年份。我也有用户模型,我想通过向 boat_id
的用户模型添加迁移来连接它们,并且我向用户模型添加了 belongs_to :boat
和 has_many :boats
。但是我无法从控制台到达 User.first.boat.name
,即使我能够到达 Boat.first.brand.name
。
当我尝试时 User.first.boat.name
。控制台给出错误提示;
NoMethodError: undefined method `boat' for #<User:0x0000000665dc30>
顺便说一句:船模型包括 model_id
brand_id
和 year_id
。
编辑1:
或者我应该删除 Boat 模型并直接将 model_id
brand_id
和 year_id
添加到 User 模型。
编辑2:
我希望能够达到 User.first.boat.brand.name
或 User.first.boat.year.nameor User.first.boat.model.name
编辑3:
每艘船都有一个品牌、年份和型号。但是用户可以有很多船
编辑4:
我要做的是;
用户可以注册并登录
然后用户按 link 列出我的船。
He/she 保存船然后页面呈现到用户配置文件
在用户配置文件中,我不知道如何获取当前用户船名年份等。这就是我感到困惑的原因。抱歉造成误会
运行rails generate migration
,然后填写change
方法如下:
def change
add_column :boats, :user_id, :integer
end
然后 运行 rake db:migrate
.
您的用户模型是 has_many 艘船,因此您需要船 table 来引用用户。可能值得阅读 ActiveRecord 关联的 Rails 指南,以更好地了解其工作原理:http://guides.rubyonrails.org/association_basics.html#the-has-many-association
我认为您对 Rails 关联如何与它们在数据库中的存储方式相结合感到困惑。如果一个User可以有很多条船,那么外键需要放在boats
table上。目前您在用户 table 中有 boat_id
,这应该被删除,并且需要根据 Matt 的回答将 user_id
列添加到船 table 中。
要实现您的目标,您需要按以下方式设置模型:
class User
has_many :boats
...
end
class Boat
belongs_to :user # table has a user_id column
...
end
然后您可以使用 user.boats.first.brand.name
访问船的品牌
我有一个船型及其型号,例如品牌、型号和年份。我也有用户模型,我想通过向 boat_id
的用户模型添加迁移来连接它们,并且我向用户模型添加了 belongs_to :boat
和 has_many :boats
。但是我无法从控制台到达 User.first.boat.name
,即使我能够到达 Boat.first.brand.name
。
当我尝试时 User.first.boat.name
。控制台给出错误提示;
NoMethodError: undefined method `boat' for #<User:0x0000000665dc30>
顺便说一句:船模型包括 model_id
brand_id
和 year_id
。
编辑1:
或者我应该删除 Boat 模型并直接将 model_id
brand_id
和 year_id
添加到 User 模型。
编辑2:
我希望能够达到 User.first.boat.brand.name
或 User.first.boat.year.nameor User.first.boat.model.name
编辑3: 每艘船都有一个品牌、年份和型号。但是用户可以有很多船
编辑4: 我要做的是; 用户可以注册并登录 然后用户按 link 列出我的船。 He/she 保存船然后页面呈现到用户配置文件 在用户配置文件中,我不知道如何获取当前用户船名年份等。这就是我感到困惑的原因。抱歉造成误会
运行rails generate migration
,然后填写change
方法如下:
def change
add_column :boats, :user_id, :integer
end
然后 运行 rake db:migrate
.
您的用户模型是 has_many 艘船,因此您需要船 table 来引用用户。可能值得阅读 ActiveRecord 关联的 Rails 指南,以更好地了解其工作原理:http://guides.rubyonrails.org/association_basics.html#the-has-many-association
我认为您对 Rails 关联如何与它们在数据库中的存储方式相结合感到困惑。如果一个User可以有很多条船,那么外键需要放在boats
table上。目前您在用户 table 中有 boat_id
,这应该被删除,并且需要根据 Matt 的回答将 user_id
列添加到船 table 中。
要实现您的目标,您需要按以下方式设置模型:
class User
has_many :boats
...
end
class Boat
belongs_to :user # table has a user_id column
...
end
然后您可以使用 user.boats.first.brand.name