我在Postgres数据库结构中有两个表,如下所示:
CREATE TABLE tables(
id serial NOT NULL,
name character varying(255),
table_state_id integer,
table_type integer,
CONSTRAINT tables_pkey PRIMARY KEY (id)
)
和
CREATE TABLE table_states
(
id serial NOT NULL,
name character varying(255),
CONSTRAINT table_states_pkey PRIMARY KEY (id)
)
表型号:
class Table < ActiveRecord::Base
attr_accessible :name, :table_type, :table_state_id,
belongs_to :table_state
end
TableState Model:
class TableState < ActiveRecord::Base
attr_accessible :name, :color_code
has_many :tables
end
在视图中,我正在那样访问:
= debug @table_data.table_state.name # Where `@table_data` is a variable from `tables` table
通过关联,我想访问name
表的table_states
列,该表的ID存在于table_state_id
表的tables
列中。我该怎么办?
答案 0 :(得分:0)
您的代码中包含所有内容。您的table_state_id
表格中tables
必须保存为零。
错误表示您的table_state
关联对象为零。这个@table_data.table_state
将返回table_state对象,并将此引用为nil。
尝试在select table_state_id from tables
上运行db console
并查看结果。并通过db console
进行必要的记录更改。
将来您还可以使用try
来解决此类问题(特别是生产模式)
= debug @table_data.table_state.try(:name)