2015-05-14 1 views
0

У нас есть 2 таблицы PostgreSQL следующим образом:Само присоединяется к рельсам через поле массива на другой модели

Keywords table: id, keyword (string) 
Joins table: id, keyword_ids (integers array) 

Теперь я хочу, чтобы добавить ассоциации как ключевые слова и модели псевдонимы следующим

class Keyword < ActiveRecord::Base 
    has_many :joins 
end 

class Join < ActiveRecord::Base 
    belongs_to :keywords foreign_key: 'keyword_ids' 
end 

Как я могу это сделать в Rails 4 и PostgreSQL 9.3?

+0

это может быть полезным: http://stackoverflow.com/a/12267745/291962, http://www.postgresql.org/docs/9.3/static/functions-array.html – Aboelnour

+1

@Aboelnour Я нашел лучшие статьи здесь http: // blog.plataformatec.com.br/2014/07/rails-4-and-postgresql-arrays/ и здесь http://blog.arkency.com/2014/10/how-to-start-using-arrays-in- rails-with-postgresql/Но они ничего не говорили об ассоциациях! –

ответ

0

Кажется, что это не может быть сделано с Rails ассоциаций, так что я сделал метод следующую модель/класс

def alias_keywords 
    AliasKeyword.select("keyword").joins("JOIN alias_joins ON alias_keywords.id = ANY(alias_joins.joins)").where("? = ANY(alias_joins.joins)", self.id).map{|x| x.keyword} 
end 

Теперь я могу легко, AliasKeywords.first.alias_keywords доступа

Смежные вопросы