我正在尝试开发一个小型的Rails 4应用程序,但我遇到了一些麻烦 - 从旧的Rails版本中有很多不同的东西。
当我尝试获取相关模型的属性时,收到PG::UndefinedColumn:
错误。相关模型与has_one
关系相关联,但我会更好地解释我的模型。
网站(官方,这称为“项目”):
分类
国家:
has_one :country
accepts_nested_attributes_for :country
has_one :category
accepts_nested_attributes_for :category
has_many :site
# timestamp_add_column_idcountry_to_site
# Adding reference (Foreign Key) of country to Site (Now Site will have a country_id field).
add_reference :sites, :country, index: true
# timestamp_add_column_idcategory_to_site
# Adding reference (Foreign Key) of category to Site (Now Site will have a category_id field).
add_reference :sites, :category, index: true
<%= @category.site.each do |store| %>
<h1>Name: <%= store.name %></h1>
<h3>Country: <%= store.country.name %> </h3>
<% end %>
(在店内。 country.name )
PG::UndefinedColumn: ERROR: column countries.site_id does not exist
LINE 1: SELECT "countries".* FROM "countries" WHERE "countries"."i...
^
: SELECT "countries".* FROM "countries" WHERE "countries"."site_id" = $1 ORDER BY "countries"."id" ASC LIMIT 1
您还需要其他信息吗?如果是,请告诉我,我会尝试更快地编辑问题。 如何访问“site.country.name”属性?
答案 0 :(得分:3)
您的Site#has_one :country
需要Site#belongs_to :country
。
答案 1 :(得分:3)
正如janfoeh所指出的,您的站点模型中应该包含以下代码:
belongs_to :country
belongs_to :category
这样,您可以Site.find(1).country
返回网站的国家/地区,或Country.find(1).sites
返回在某个国家/地区找到的所有网站。
如果您想执行“has_one”路线,您的数据模型应如下所示:
网站:
类别:
国家:
您还应该更改国家/地区和类别模型的代码:
belongs_to :site