Mysql 在Rails ActiveRecord中访问和设置对象

Mysql 在Rails ActiveRecord中访问和设置对象,mysql,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我在Rails 3.2中有一个类,我们称之为Foo,它有另一个称为Bar的类(两个都是ActiveRecords),如下所示: 我的问题是,为什么Rails试图选择BarbyFoo的id,而我显然想要BarbyFoo的bar\uID属性 如果需要更多解释,请告诉我。看起来你的关系倒退了。在您的情况下,类Foo应该有属于:bar而不是有一个:bar class Foo < ActiveRecord::Base belongs_to :bar ... end class Foo

我在Rails 3.2中有一个类,我们称之为Foo,它有另一个称为Bar的类(两个都是ActiveRecords),如下所示:

我的问题是,为什么Rails试图选择BarbyFoo的id,而我显然想要BarbyFoo的bar\uID属性


如果需要更多解释,请告诉我。

看起来你的关系倒退了。在您的情况下,
类Foo
应该有
属于:bar
而不是
有一个:bar

class Foo < ActiveRecord::Base
  belongs_to :bar

  ...

end
class Foo
关系中具有另一个表的键的表始终使用关联中的
属于
。有关
属于
关联(以及一般关联)的更多信息,请参阅:


看起来你的关系倒退了。在您的情况下,
类Foo
应该有
属于:bar
而不是
有一个:bar

class Foo < ActiveRecord::Base
  belongs_to :bar

  ...

end
class Foo
关系中具有另一个表的键的表始终使用关联中的
属于
。有关
属于
关联(以及一般关联)的更多信息,请参阅:


有一个
关联外键放置在
参考模型(条形图)
中,而不是
声明模型(Foo)
。因此,在您的例子中,rails希望
Bar
模型中的外键为
Bar.foo\u id
。这就是错误消息中查询的原因

当您希望在声明型号中使用外键时,应使用
属于
,如果您希望在另一型号中使用外键,则应使用
拥有一个

如果你想在Foo中输入外键作为bar\u id

您可以在Foo模型中选择一个
属于:bar


在条形模型中有一个:foo

有一个
关联的外键放置在
引用模型(条形)
中,而不是
声明模型(foo)
中。因此,在您的例子中,rails希望
Bar
模型中的外键为
Bar.foo\u id
。这就是错误消息中查询的原因

当您希望在声明型号中使用外键时,应使用
属于
,如果您希望在另一型号中使用外键,则应使用
拥有一个

如果你想在Foo中输入外键作为bar\u id

您可以在Foo模型中选择一个
属于:bar


A
在条形模型中有一个:foo

嗯……这是可行的,但考虑到数据库中的foo'has_one'键引用条和Bar不了解foo,措辞似乎有点违反直觉。好吧,不管怎样,谢谢:)嗯……这很管用,但考虑到数据库中的foo‘has_one’键引用栏和bar不了解foo,我觉得这句话有点违反直觉。不管怎样,谢谢:)
class Foo < ActiveRecord::Base
  belongs_to :bar

  ...

end