Мультимодельная форма в Rails 3 - PullRequest
0 голосов
/ 10 мая 2011

Я все еще немного n00b, когда дело доходит до рельсов, однако у меня есть вопрос относительно того, как работать с многомодельной формой.

По сути, у меня есть событие, и пользователь должен иметь возможность зарегистрироваться на событие и предоставить кредитную карту для оплаты события. Кредитная карта (я не буду хранить фактические данные для CC, авторизует.net, но мне нужно сохранить токен, представляющий карту), будет жить с пользователем, чтобы он мог подписаться на другие события в будущем. Итак, я хочу, чтобы пользователь мог редактировать это в будущем, а карта не относится только к одному событию. Это не похоже на то, с чем я бы использовал вложенные маршруты, не так ли?

У меня такое ощущение, что это довольно просто, но, думаю, я просто не совсем уверен, как это сделать. Могу ли я использовать вложенные модели (не маршруты) и по-прежнему обновлять каждую часть независимо?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Если я понимаю ваш вопрос, то да, вы можете.Я думаю, что вы имеете в виду что-то вроде этого:

class User < ActiveRecord::Base
  has_one :credit_card
end

Если это правильно, то первым шагом является добавление этого в класс User:

class User < ActiveRecord::Base
  has_one :credit_card
  accepts_nested_attributes_for :credit_card
end

На данный момент вы можете просто установитьдо ресурса "пользователи" в файле маршрутов, и вы можете редактировать кредитную карту с помощью метода fields_for в вашем представлении редактирования:

form_for @user do |f|
  f.fields_for :credit_card do |ff|
    ff.label :number
    ff.text_field :number
  end
  f.submit
end

Помогает ли это?

0 голосов
/ 23 августа 2012

Так как форматирование в комментариях запрещено, я отвечаю за него.

Спасибо @twmills за ваш ответ,

Я также новичок в рельсах,У меня есть вопрос, будет ли это работать в случае, если у меня есть следующие отношения:

class User < ActiveRecord::Base
  has_many :credit_cards, :dependent => :destroy
  accepts_nested_attributes_for :credit_card
end

class CreditCards < ActiveRecord::Base
  belongs_to :user
end

В вышеупомянутом случае вы не можете создать объект CreditCard, если у вас нет родительского пользователя.Будет ли f.fields_for :credit_card do |ff| также создавать объект CraeditCard @user для f?

Насколько я понимаю, это невозможно, поскольку, как будет определено представление, какую кредитную карту редактировать.

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

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