use*_*954 4 ruby ruby-on-rails-4 rails-activerecord
一直在乱搞Rails,在通过Hartl的教程时,我被要求做一个项目.认为这是偏离路径的好机会,即使我不够了解;)因此,为什么我有一些问题.
我有两个型号:
Foo,其中包含参数名称和 has_many FooStatus
FooStatus,其参数为Foo.name和content,belongs_to Foo
Hartl的教程使用您登录的帐户,因此@foo参数已经绑定并且foo.id可以随时使用.经过身份验证后,用户可以为任何人创建状态Foo.在我的HTTP请求,我想送过来foo.name,并foostatus.content保存并有信息到我的DB.
我的问题:这些模型是否会在数据库中存储两个对象之间的相应关系/链接?
这条线<% if @foo.foostatus.any? %>给了我错误
SQLite3::SQLException: no such column: foostatus.foo_id: SELECT 1 AS one FROM "foostatus" WHERE "foostatus"."foo_id" = ? ORDER BY created_at DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
所以我假设该.any?方法正在寻找foostatus.foo_id,我没有存储在我的表中.
我原本以为我可以说
foo = Foo.find_by_name(params[:name])
@foostatus = foo.foostatus.build(params[:content])
Run Code Online (Sandbox Code Playgroud)
但阅读强参数会让我陷入困境,因为这是不允许的.
您可以指定将哪些列用作关联的外键和主键:
class Foo < ActiveRecord::Base
has_many :foo_statuses, foreign_key: :foo_name, primary_key: :name
end
class FooStatus < ActiveReocrd::Base
belongs_to :foo, foreign_key: :foo_name, primary_key: :name
end
Run Code Online (Sandbox Code Playgroud)