我有两个模型:
class Wine
belongs_to :region
end
class Region
has_many :wines
end
我正在尝试将#where 方法与通过将参数哈希中的某些元素转换为查询哈希而构建的哈希一起使用,例如{ :region => '2452' }
def index
...
@wines = Wine.where(hash)
...
end
但我得到的只是执行查询时出现列不存在错误:
ActiveRecord::StatementInvalid: PGError: ERROR: column wines.region does not exist
LINE 1: SELECT "wines".* FROM "wines" WHERE "wines"."region" =...
当然,如果我查询该表,wines
则不会出现错误。region_id
region_id
问题如下:
是否有一种 rails-y 方法来使用方法中的Wine
特定查询对象?根据我知道我能做的,我在下面列出了一些选项。regions
id
#where
选项 1:我可以更改构建查询哈希的方式,以便每个字段都具有_id
({ :region_id => '1234', :varietal_id => '1515' }
但不是所有的关联来自Wine
are belongs_to
,因此在 wines 中没有条目 for _id
,使得逻辑更复杂的连接和什么不是。
选项 2:构建一个 SQL where 子句,再次使用一些逻辑来确定是使用 id 还是连接另一个表……再次,逻辑会稍微复杂一些,深入研究 SQL 会让它感觉不那么 Rails-y。或者我在这方面可能是错的。
选项 3..n:我没有想到的事情......你的意见在这里 :)