私は2つのモデルを持っています:
Skillnames
とSkills
User
を作成することができskillname
、私skill
にskills model
は参照 " skill_id
" があります。これは、実行Skillname.where(:id => @skill.skill_id)
すると名前が返されることを意味します。
今、私は何かについて非常に混乱しています。PG_Search
を使用して検索を作成しましたassociated_against
。これで、skill_id を使用してユーザーのスキルを検索できます (これはあまりスマートではありません)。スキルのモデルで次のようなものを作成できるかどうか疑問に思っていました。
仮想属性:
def skillname=(skillname)
Skill.where(:skill_id => Skillname.where(:name => skillname).first.id)
end
更新: モデルの追加:
class Skill < ActiveRecord::Base
include PgSearch
attr_accessible :user_id, :skill_id
belongs_to :user
end
class User < ActiveRecord::Base
include PgSearch
pg_search_scope :search, against: [:first_name, :last_name,:country],
:associated_against => {
:skills => :name,
}
end
class Skillname < ActiveRecord::Base
include PgSearch
belongs_to :user
attr_accessible :user_id, :description, :name
end