私はModel
,ModelType
、およびModelCategory
という3つのモデルを持っています。それらは、ModelTypeRelationship
とModelCategoryRelationship
のような関連テーブルを介して互いに接続されています。Rails - 2つの独立した関連条件に一致するモデルを選択してください
# app/models/model.rb
class Model < ActiveRecord::Base
has_many :model_type_relationships, dependent: :destroy
has_many :model_category_relationships, dependent: :destroy
has_many :types, through: :model_type_relationships
has_many :categories, through: :model_category_relationships
...
end
注:model1.type
はmodel1
に関連付けられているModelType
オブジェクトの配列を返します。 models
は、複数のmodel_types
またはmodel_categories
に関連付けられている可能性があります。
ランダムModel
を選択して、type1
とcategory1
となるようにしたいと考えています。
type1
のModel
を選択するといくつかの成功を収めましたが、それ以降は固まってしまいました。ここではその選択のための私のコードは次のとおりです。
ModelType.find_by_name("type1").models.find(:first, :order => "Random()")
注:type1
のModel
オブジェクトの配列を返しますmodel_type1.models
。
完全に働いた - ありがとう!興味のある人は、 'lambda'と' arel_table [] 'の研究をするときに役立つRailsCastを見つけました:http://railscasts.com/episodes/215-advanced-queries-in-rails-3 – Nick
また、ランダム元の質問に記載されている 'find(:first、:order =>" Random() ")'を追加しました。 – Nick