Назначение рельсового объединения с использованием строк - PullRequest
2 голосов
/ 30 марта 2012

Скажем, у меня есть две модели, и одна принадлежит другой. Теперь обычно вы назначаете объект ассоциации при заполнении полей. Позволяет ли рельсы переопределять заданный метод, чтобы можно было настроить назначение ассоциации?

* 1003 например *

class Person
  # something about shirts
end

class Shirt
  belongs_to :person

  def person=(p)
    self.person = Person.find_or_create_by_name(p)
  end
end

А затем используйте что-то вроде так, чтобы автоматически связывать ассоциацию, но используя строку для автоматического поиска и связывания. Это возможно?

s = Shirt.new

s.person = "Тестовый человек"

Спасибо

1 Ответ

3 голосов
/ 30 марта 2012

ROR Направляющие охватывают расширение ассоциации , которое вам нужно.

UPDATE: На самом деле, переопределение сеттера не так уж и плохо, если вы понимаете, что делаете. Но вы должны быть осторожны, так как это может вызвать бесконечный цикл (как в вашем примере). Поэтому, если вы используете Rails 3.2, вам нужно использовать super, в противном случае вам придется использовать alias_method_chain .

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