2013-07-04 1 views
1

그래서, 나는 오래된 php 앱을위한 설정이었던 DB를 가지고 있으며 DB가 완료되는 방식을 만질 수 없다.레일즈에서 컬럼 이름에 대한 별칭 attlueibute

는 그러나, 나는 "클래스"

그래서 나는 alias_attribute를 사용, 그것은 작동하도록처럼 루비에 일부 제한 단어를 사용하고있는 DB에 약간의 열 이름을 가지고있다.

하지만 작동하지 않습니다. 여기

class Contractor < ActiveRecord::Base 
    set_table_name "contractors" 
    alias_attribute :class_type, :class 
    attr_accessible :about, :alias, :business_entity, :business_logo, :business_name, :city, :class, :county, :created, :email, :founded, :metroarea, :nid, :phone, :state, :status, :street_address, :uid, :zipcode 
end 

는 오류입니다 :

1.9.3-p125 :001 > Contractor.last 
SyntaxError: /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:345: syntax error, unexpected ')', expecting '=' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:343:in `module_eval' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:343:in `define_optimized_call' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:227:in `block in alias_attribute' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:224:in `each' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:224:in `alias_attribute' 
    from /Users/snoopy/Projects/buildzoom/ruby/service_request/app/models/contractor.rb:3:in `<class:Contractor>' 
    from /Users/snoopy/Projects/buildzoom/ruby/service_request/app/models/contractor.rb:1:in `<top (required)>' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:469:in `load' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:469:in `block in load_file' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:639:in `new_constants_in' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:468:in `load_file' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:353:in `require_or_load' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:502:in `load_missing_constant' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:192:in `block in const_missing' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:190:in `each' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:190:in `const_missing' 
    from (irb):1 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start' 
    from /Users/snoopy/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

1.9.3-p125 :003 > Contractor.where(:zipcode => "94111") 
    Contractor Load (648.6ms) SELECT `contractors`.* FROM `contractors` WHERE `contractors`.`zipcode` = '94111' 
(Object doesn't support #inspect) 
=> 

나는 처음과 동일한 오류입니다 그렇지 않으면 alias_attribute을 제거 할 때 마지막 하나는 나타나지 여기에 코드입니다

답변

0

에게 레일을 방해 할 수 액티브 방법 중 하나입니다, 보석 safe_attributes이있는 사람 그 일을하고있다. 지금까지 완벽하게 작동합니다.

0

문제가 ": class"라고 준 별칭 이름이라고 생각합니다. 클래스 이 별칭은 단순히 어떤 방법으로 그것을 "무시"정의이 명령

Contractor.first.methods 

를 실행하여보고 작동 그래서

관련 문제