Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.98.71] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте
Есть такие миграции class CreateNsFirsts < ActiveRecord::Migration def change create_table :ns_firsts do |t| t.timestamps end end end class CreateNsSeconds < ActiveRecord::Migration def change create_table :ns_seconds do |t| t.references :ns_first, :null => false t.timestamps end add_index :ns_seconds, :ns_first_id, :unique => true end end и модели class Ns::First < ActiveRecord::Base has_one :second_model, :class_name => "Ns::Second" end class Ns::Second < ActiveRecord::Base belongs_to :ns_first end и при попытке вызвать Ns::First#build_second_model вылетает эксепшен о не известном атрибуте first_id xandox@stitche /tmp/test_app$ rails console Loading development environment (Rails 3.1.0.rc1) irb(main):001:0> f = Ns::First.new => #<Ns::First id: nil, created_at: nil, updated_at: nil> irb(main):002:0> f.second_model => nil irb(main):003:0> f.build_second_model ActiveRecord::UnknownAttributeError: unknown attribute: first_id from /var/lib/gems/1.8/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:1728:in `assign_attributes' from /var/lib/gems/1.8/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:1722:in `each' from /var/lib/gems/1.8/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:1722:in `assign_attributes' from /var/lib/gems/1.8/gems/activerecord-3.1.0.rc1/lib/active_record/associations/singular_association.rb:30:in `build' from /var/lib/gems/1.8/gems/activerecord-3.1.0.rc1/lib/active_record/associations/builder/singular_association.rb:33:in `build_second_model' from (irb):3 irb(main):004:0> Интуиция подсказывает, что это баг в рельсах, но хотелосьбы быть до конца увереным, что я все делаю правильно, так как в рельсах еще не очень разбираюсь. |
Сообщ.
#2
,
|
|
|
разобрался, помгли ребята с #rubyonrails
оказываеться для указания refernces для моделий в одном наймспэйсе не надо ставить префикс наэймспэйса, то есть вторая миграция должна выглядить так class CreateNsSeconds < ActiveRecord::Migration def change create_table :ns_seconds do |t| t.references :first, :null => false t.timestamps end add_index :ns_seconds, :ns_first_id, :unique => true end end |
Сообщ.
#3
,
|
|
|
Сорри за оффтоп - в 3.х наконец-то заработали неймспейсы в моделях?
|
Сообщ.
#4
,
|
|
|
deil я честно говоря не знаю как было во вторых, я с 3 начал.
|
Сообщ.
#5
,
|
|
|
В 2.3.х не работало Падало в неожиданных местах..
|
Сообщ.
#6
,
|
|
|
Цитата deil @ Падало в неожиданных местах.. Хм а как падоало? я просто еще не очень их активно использую (тоснее проект очень медленно развивается), по этому ничего сказать не могу, но было бы интересно узнать, чего можно ожидать от этого? |
Сообщ.
#7
,
|
|
|
Если у тебя две модели в одном неймспейсе и они связаны ассоциацией - то часто приходилось указывать :class_name => 'namespace:model', ибо AR не понимал что модель стоит искать в текущем неймспейсе. И из-за этого иногда валилось с ошибкой, мол модуль неймспейс:неймспейс:модель - не найдено! В зависимости от того, как ты используешь модель.
Вобщем, никакой логики. Для одного случая вызова модели нужно явно указывать неймспейс, для другого - удалять. В итоге оба одновременно работать не будут.. |
Сообщ.
#8
,
|
|
|
deil спасибо, как более мение пойму как это сейчас обязательно отпишусь
|