Как использовать динамические атрибуты / столбцы в операторах 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})
}
Другие вопросы по тегам