Ruby Rails在不使用id的情况下有很多关系
在学习Hartl的教程时,我被要求做一个项目。我觉得这是一个偏离正道的好机会,尽管我知道的还不够多;)所以我有一些问题 我有两种型号:Ruby Rails在不使用id的情况下有很多关系,ruby,ruby-on-rails-4,rails-activerecord,Ruby,Ruby On Rails 4,Rails Activerecord,在学习Hartl的教程时,我被要求做一个项目。我觉得这是一个偏离正道的好机会,尽管我知道的还不够多;)所以我有一些问题 我有两种型号: Foo,它有参数名,有许多FooStatus FooStatus,具有参数Foo.name和content,属于Foo Hartl的教程使用您登录的帐户,因此,@foo参数已绑定,foo.id将随时可用。经过身份验证后,用户可以为任何Foo创建状态。在我的HTTP请求中,我试图发送foo.name和foostatus.content并将这些信息保存到我的数据库中
Foo
,它有参数名,有许多FooStatus
FooStatus
,具有参数Foo.name和content,属于Foo
Hartl的教程使用您登录的帐户,因此,@foo
参数已绑定,foo.id
将随时可用。经过身份验证后,用户可以为任何Foo
创建状态。在我的HTTP请求中,我试图发送foo.name
和foostatus.content
并将这些信息保存到我的数据库中
我的问题是:
这些模型是否会在数据库中存储两个对象之间的适当关系/链接
行
告诉我错误
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
因此,我假设.any?
方法正在查找foostatus.foo\u id
,我不将其存储在我的表中
我原本以为我可以说
foo = Foo.find_by_name(params[:name])
@foostatus = foo.foostatus.build(params[:content])
但是阅读强参数让我陷入了困境,因为这是不允许的。您可以指定哪些列将用作关联的外键和主键:
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
class Foo
我花了一分钟才意识到我错过了foo_name前面的冒号,但我明白了!)非常感谢好先生!