【发布时间】:2011-05-10 02:01:08
【问题描述】:
我是 Rails 新手,正在尝试设置我的模型,想知道 Rails 如何处理关联。
我有一个 Quest 对象,它“belongs_to”或通过外键引用许多其他对象,包括用户和内容:
quest.user_id
quest.a_different_name_id #this is a foreign key to a Content object
这些都是分别引用用户对象和内容对象的外键。
用户和内容“has_many”任务。
我了解此设置允许我执行以下操作:
u = User.create #saves to database
u.quests.build #creates new Quest object with user id set to u.id
我可以做一些相反的事情吗:
form_for @quest do |f|
f.text_field :a_user_attribute #an attribute of a User object
f.text_field :a_different_name_attribute #an attribute of a Content object
其中表单包含 Quest 对象通过其外键引用的对象属性的文本字段,而不是具有实际外键的表单,因此在控制器中时我有:
@quest = Quest.new(params[:quest])
Rails 是否足够聪明,可以“通过”模型定义的外键关系并填充并保存 User 和 Content 对象,并在 @quest 中适当地设置外键以引用新创建的对象?
即使 Content 对象的外键名称与 content_id 不同,它也能做到这一点吗?
希望这是有道理的...如果我不清楚,请告诉我。
【问题讨论】:
标签: ruby-on-rails controller associations foreign-key-relationship