Ruby on Rails - 访问字段对象的关系数据库项

时间:2013-01-29 22:48:24

标签: ruby-on-rails relational-database rails-activerecord

我在注册管理机构之间有多对一的关系......

class Registry < ActiveRecord::Base
  has_many :user_registries
  attr_accessible :logo, :name
  has_attached_file :logo
end

和user_registries ...

class UserRegistry < ActiveRecord::Base
    belongs_to :page
    has_one :registry
  attr_accessible :page_id, :registry_id, :url
end

我试图在表单中显示名称或徽标,如下所示:

.registry
  = debug f.object.registry.name
  .field
    = f.label :title
    = f.text_field :title
  .field
    = f.label :url
    = f.text_field :url
  .field
    = f.hidden_field :_destroy
    = link_to_function "remove", "remove_fields(this)"

但我得到一个SQL错误,如下所示:

Mysql2::Error: Unknown column 'registries.user_registry_id' in 'where clause': SELECT  `registries`.* FROM `registries`  WHERE `registries`.`user_registry_id` = 14 LIMIT 1

我的关系设置不正确吗?

2 个答案:

答案 0 :(得分:0)

我真的认为它与关系无关。你能否确保表“registries”中有一个列“user_registry_id”,在你的情况下,我相信它应该被设置为外键。

答案 1 :(得分:0)

我的关系实际上是不正确的。

class UserRegistry < ActiveRecord::Base
    belongs_to :page
    has_one :registry
    attr_accessible :page_id, :registry_id, :url
end

外键在用户注册表中,因此我需要belongs_to而不是has_one关系,而不是这样。

class UserRegistry < ActiveRecord::Base
    belongs_to :page
    belongs_to :registry
    attr_accessible :page_id, :registry_id, :url
end