Rails:从没有模型的表中检索值

时间:2014-03-29 05:26:53

标签: ruby-on-rails

在rails中有没有办法从没有任何模型的表中检索值?我创建了一个表item_types,其中包含字段name和item_id,其中item_id是另一个表项的主键。 items表中的每个项目可以有3个或4个item_types。这里我想显示具有特定item_id的项目的相应item_types。我们在变量@ item.id中只有特定项的item_id 我试过形成一个SQL查询,但我不知道如何在没有模型的情况下实现它。此外,我不确定下面查询中的'item_id = @ item.id'部分是否正确。

select * from item_types where item_id = @item.id

1 个答案:

答案 0 :(得分:0)

您所看到的是join_model,可以与has_and_belongs_to_manyhas_many :through关系一起使用

我不知道您要实现的目标,但我强烈建议您在独立模型中使用has_many :through关联:

#app/models/type.rb
Class Type < ActiveRecord::Base
    has_many :item_types
    has_many :items, through: :item_types
end

#app/models/item.rb
Class Item < ActiveRecord::Base
    has_many :item_types
    has_many :types, through: :item_types
end

#app/models/item_type.rb
Class Type < ActiveRecord::Base
    belongs_to :item
    belongs_to :type
end

这样您就可以通过其他模型致电join_model,如下所示:

@item = Item.find(params[:id])
@item.item_types #-> calls SQL "select * from item_types where item_id = @item.id"

这是执行此操作的正确Rails方法。 HABTM不使用模型; HMT。您应该使用@Bharat Soni's评论&amp;生成模型使用我的代码段访问它