Почему порядок выполнения назначений атрибутов не выполняется? - PullRequest
0 голосов
/ 02 июня 2011

Я передаю эти параметры контроллеру:

{
  "utf8" => "✓",
  "authenticity_token" => "ersjaJ4/ieZelVifP/YpBHTJtiQ53HgO5KYjEdW0BlQ=",
  "transaction" => {
    "use_balance" => "1",
    "traces_attributes" => {
      "trace_ids" => ["6"],
      "6" => {
        "amount" => "12.0",
        "charge_id" => "6"
      }
    },
    "positive_balance" => "12",
    "property_id" => "2",
    "community_id" => "1"
  },
  "commit" => "Save Payment",
  "community_id" => "1",
  "property_id" => "2"
}

controller#create затем:

@payment = Transaction.new(params[:transaction])

Тогда модель транзакции:

belongs_to :property
belongs_to :community
attr_accessible :positive_balance

def traces_attributes=(params)
  #INSIDE HERE THE VALUES OF
  #params[:trace_ids] => ['6'] OK
  #BUT
  #self.possitive_balance => "" **NOT OK**
  #self.property_id => nil **NOT OK**
end

Моя гипотеза состоит в том, что traces_attribute= выполняется до positive_balance= и property_id

Могу ли я изменить это? Почему это терпит неудачу?

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

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

Более безопасным решением было бы хранить данные только в методе traces_attributes= и обращаться к другим атрибутам позже, например, в before_save callback .

0 голосов
/ 02 июня 2011

на основе хэша транзакции выглядит, что property_id находится вне этого хэша, поэтому, если вы строите на основе транзакций, у него не будет property_id

"transaction"=>{"use_balance"=>"1",
                "traces_attributes"=>{"trace_ids"=>["6"],
                                      "6"=>{"amount"=>"12.0",
                                            "charge_id"=>"6"
                                            }
                                      },
                "positive_balance"=>"12",
                "property_id"=>"2",
                "community_id"=>"1"
 },
"commit"=>"Save Payment",
"community_id"=>"1",
"property_id"=>"2"}

вы видите, что я имею в видуколичество фигурных скобок перепутано и проп.id не заканчивается транзакциями (я просто скопировал и вставил ваш код, вставленный выше)

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