我有一个船模和它的模型,如品牌,型号和年份。我还有用户模型,我希望通过将迁移添加到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
。
EDIT1:
或者我应该删除Boat模型并直接将model_id
brand_id
和year_id
添加到User模型。
EDIT2:
我希望能够访问User.first.boat.brand.name
或User.first.boat.year.name or User.first.boat.model.name
EDIT3: 每艘船都有一个品牌,年份和型号。但是用户可以拥有很多船
EDIT4: 我要做的是; 用户可以注册并登录 然后用户按下我的船的链接列表。 他/她保存船只然后页面呈现给用户配置文件 在用户配置文件中,我不知道如何获得当前用户船名年等。这就是我感到困惑的原因。对不起,误会了
答案 0 :(得分:1)
运行rails generate migration
,然后按以下方式填写change
方法:
def change
add_column :boats, :user_id, :integer
end
然后运行rake db:migrate
。
您的用户模型has_many船只,因此您需要船只表来引用用户。可能值得阅读ActiveRecord关联的Rails指南,以更好地了解其工作原理:http://guides.rubyonrails.org/association_basics.html#the-has-many-association
答案 1 :(得分:1)
我认为你对Rails协会如何与数据库中的存储方式一起工作感到困惑。如果用户可以拥有多个船只,则外键需要位于boats
表上。目前,您在users表中有boat_id
,这应该被移除,并且根据Matt的回答,需要将user_id
列添加到船只表中。
要实现您的目标,您需要按以下方式设置模型:
class User
has_many :boats
...
end
class Boat
belongs_to :user # table has a user_id column
...
end
然后您可以使用user.boats.first.brand.name