Как использовать динамические атрибуты / столбцы в операторах Squeel?
В моем предыдущем выпуске я обнаружил, что следующий код работает должным образом:
def my_squeel_query
table_name = Squeel::Nodes::Stub.new("#{self.class.to_s.tableize}_comment_associations".to_sym)
commenters.
.where{
table_name.article_id.eq(my{self.id})
}
end
Можно ли сделать article_id
заявление как динамическое, как сделано для table_name
переменная?
То есть я хотел бы сделать что-то вроде следующего:
def my_squeel_query
table_name = Squeel::Nodes::Stub.new("#{self.class.to_s.tableize}_comment_associations".to_sym)
commenters.
.where{
table_name.<DYNAMIC_KEY>.eq(my{self.id}) # '<DYNAMIC_KEY>' refers to a column name present in the 'commenters' database table.
}
end
1 ответ
Решение
Ты можешь использовать send
,
column_name = :article_id
commenters.where{
table_name.send(column_name).eq(my{self.id})
}