[Resolvido] Erro "Can't mass-assign protected attributes: state"

Tudo bom pessoal?

Eu já pesquisei, inclusive vi algumas soluções nesse fórum, mas as soluções postadas não resolveram o meu problema.
Eu alcanço esse erro ao usar o comando rake db:seed para alimentar o banco de dados.

Meus models:

class City < ActiveRecord::Base
  attr_accessible :name, :capital
  belongs_to :states
end
class State < ActiveRecord::Base
  attr_accessible :name, :acronym, state_id
  has_many :cities, :dependent => :destroy
end

O erro:

rake aborted!
Can’t mass-assign protected attributes: state
/var/lib/gems/1.9.1/gems/activemodel-3.2.13/lib/active_model/mass_assignment_security/sanitizer.rb:48:in process_removed_attributes' /var/lib/gems/1.9.1/gems/activemodel-3.2.13/lib/active_model/mass_assignment_security/sanitizer.rb:20:indebug_protected_attribute_removal’
/var/lib/gems/1.9.1/gems/activemodel-3.2.13/lib/active_model/mass_assignment_security/sanitizer.rb:12:in sanitize' /var/lib/gems/1.9.1/gems/activemodel-3.2.13/lib/active_model/mass_assignment_security.rb:230:insanitize_for_mass_assignment’
/var/lib/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/attribute_assignment.rb:75:in `assign_attributes’

Eu estou tentando executar o script presente nesse site, que popula o banco de dados com cidades e estados:
http://espake.com.br/2013/01/16/codigo-em-ruby-on-rails-para-popular-cidades-e-estados-do-brasil/

Eu só preciso criar esses dois models, certo? As soluções postadas que encontrei, são sempre para colocar os atributos como atrr_accessible, então não entendo de onde vem o problema :frowning:

Fico muito grato a quem puder me indicar um caminho.

stated_id tem que ficar em City

Obrigado pela resposta e me desculpe por demorar a responder (viajei no final de semana). Postar desse jeito foi um erro feio mesmo :slight_smile:
O caso é que do jeito correto, como você sugeriu, o erro se mantêm o mesmo. Curiosamente se eu dou o comando rake db:reset, exatamente o mesmo erro ocorre.

Em City tem que ser:

Obrigado novamente! Você estava certo, mas o erro continua. Estou tentando uma estratégia diferente agora. Meus models e migrations ficaram assim:

class CreateStates < ActiveRecord::Migration
  def change
    create_table :states do |t|
      t.string :name
      t.string :acronym

      t.timestamps
    end
  end
end
class CreateCities < ActiveRecord::Migration
  def change
    create_table :cities do |t|
      t.belongs_to :state
      t.string :name
      t.boolean :capital
      t.integer :state_id

      t.timestamps
    end
  end
end
class State < ActiveRecord::Base
  attr_accessible :name, :acronym
  has_many :cities
end
class City < ActiveRecord::Base
  attr_accessible :name, :capital, :state_id
end

Estou pensando em setar o config.active_record.whitelist_attributes para false. Li que isso deve resolver, mas acho que não é a solução mais elegante. Também não sei se funcionará.

config.active_record.whitelist_attributes para false e o mesmo erro continua. Acho que vou voltar para o básico de Rails hahaha

Problema resolvido! O erro não era nos models ou nas migrations e sim no script seed.rb que fazia a associação com state e não state_id.

Obrigado pelo tempo cedido em minha ajuda :slight_smile:

Blz coloque [Resolvido] por favor no título