Сделать модель рельсов интерпретировать значение, которое не является столбцом в таблице - PullRequest
1 голос
/ 10 мая 2011

Я использую серию именованных областей в модели для генерации запроса. В этом запросе есть соединение с другой таблицей, в которой у меня есть несколько логических полей. Когда я получаю доступ к значениям этих столбцов, он возвращает строки («0» и «1»).

Есть ли СУХОЙ способ сообщить модели, как интерпретировать эти столбцы? (Я знаю, что могу написать методы для переопределения аксессора, но это не так).

Я использую рельсы 2.3.8.

1 Ответ

2 голосов
/ 10 мая 2011

Если под «переопределить метод доступа» вы подразумевали read_attribute и write_attribute методы, то это абсолютно правильный способ сделать это. Тип Rails приводит к автоматическому приведению полей к полям, и в AFAIK нет прямого способа повлиять на приведение типов, только переопределение сеттеров / геттеров .

Ради целостности, пример:

def admin_user
  read_attribute(:admin_user) == "1" ? true : false
end

def admin_user(v)
  write_attribute(v ? "1" : "0")
end

Примечание: для более сложных случаев (скажем, шифрование пароля) лучшим способом будет Обратные вызовы ActiveRecord . Посмотрите на примеры там.

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