Как активная запись обрабатывает виртуальные атрибуты как реальные атрибуты? - PullRequest
5 голосов
/ 09 сентября 2010

Я достаточно счастлив, используя виртуальные атрибуты в моделях Rails, если они являются строками, но я также хотел бы использовать другие типы атрибутов, такие как даты или логические значения, чтобы я мог использовать помощники, такие как date_select, для установки виртуальных атрибутов. 1001 *

Есть хороший способ сделать это?

В нынешнем виде использование помощника date_select для виртуального атрибута повышает:

1 error(s) on assignment of multiparameter attributes

Хотя, если мне нужен логический атрибут, я получаю @v_attribute = "true", а не @v_attr = true.


Я нашел где-то пример, который, кажется, работал:

class MyModel
  #virtual attribute
  attr_accessor :v_date_field
  attr_accessible :v_date_field

  columns_hash["virtual_date_field"] = ActiveRecord::ConnectionAdapters::Column.new("vi_date_field", nil, "date")
end

Но я действительно не знаю, почему это работает, есть ли у него какие-либо побочные эффекты, и это похоже на взлом.

1 Ответ

1 голос
/ 17 сентября 2010

Проблема с виртуальным атрибутом даты / времени - это известная проблема в Rails: https://rails.lighthouseapp.com/projects/8994/tickets/2675-support-for-multiparameter-attribute-assignment-on-virtual-attribute-writers

Похоже, ваше решение - лучший вариант для ее исправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...