相关疑难解决方法(0)

如何在Rails 4中使用attr_accessible?

attr_accessible 似乎不再适用于我的模型.

在Rails 4中允许批量分配的方法是什么?

ruby-on-rails ruby-on-rails-4

257
推荐指数
3
解决办法
14万
查看次数

在Ruby on Rails中覆盖setter方法的正确方法是什么?

我正在使用Ruby on Rails 3.2.2,我想知道以下是否是一个"正确"/"正确"/"确定"的方式来覆盖我的类属性的setter方法.

attr_accessible :attribute_name

def attribute_name=(value)
  ... # Some custom operation.

  self[:attribute_name] = value
end
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎按预期工作.但是,我想知道,通过使用上面的代码,将来我会遇到问题,或者至少,我应该在Ruby on Rails上遇到"我应该期待"/"可能发生"的问题.如果这不是覆盖setter方法的正确方法,那么正确的方法是什么?


注意:如果我使用代码

attr_accessible :attribute_name

def attribute_name=(value)
  ... # Some custom operation.

  self.attribute_name = value
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SystemStackError (stack level too deep):
  actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70
Run Code Online (Sandbox Code Playgroud)

ruby setter overriding ruby-on-rails ruby-on-rails-3

172
推荐指数
3
解决办法
8万
查看次数

rails simple_form字段与模型无关

我有一个与名为'Order'的模型相关联的现有表单,但我想添加新的表单字段,以捕获要在第三方支付网关上处理的信用卡信息,如名称,cc号码等.

但由于我不想在我们的数据库中保存CC信息,因此我的订单表中没有相应的列.在提交表单时,这会给我一个错误,即那些信用卡输入字段不是订单模型的"部分".

ruby-on-rails simple-form

72
推荐指数
5
解决办法
4万
查看次数

attr_accessible(*attributes)和attr_protected(*attributes)之间有什么区别?

attr_accessible(*attributes)attr_protected(*attributes)?有什么区别?例子很好.

我看到很多开发人员在他们的模型中使用它们 我搜索了差异,但我不确切地知道它们是什么.在不同情况下,重要性及其必要性是什么?

activerecord ruby-on-rails

35
推荐指数
2
解决办法
2万
查看次数

使用Paperclip保存文件而不上传

我有一个简短的问题.是否可以保存文件而不通过表单实际上传?

例如,假设我正在查看电子邮件中的附件,我想使用回形针保存它们.我该怎么做呢?我是否需要在某处手动调用save_file(或类似的东西)?

任何帮助将非常感激!

ruby-on-rails paperclip

33
推荐指数
2
解决办法
2万
查看次数

Rails - 自我与@

我正在关注Michael Hartl的RoR教程,它涵盖了密码加密的基础知识.这是目前的用户模型:

class User < ActiveRecord::Base
    attr_accessor :password

    attr_accessible :name, :email,: password, :password_confirmation

    email_regex = /^[A-Za-z0-9._+-]+@[A-Za-z0-9._-]+\.[A-Za-z0-9._-]+[A-Za-z]$/
                                              #tests for valid email addresses.

    validates :name, :presence => true,
                     :length => {:maximum => 50}
    validates :email, :presence => true,
                      :format => {:with => email_regex},
                      :uniqueness => {:case_sensitive => false}
    validates :password, :presence => true,
                         :length => {:maximum => 20, :minimum => 6},
                         :confirmation => true

    before_save :encrypt_password

    private

    def encrypt_password
        self.encrypted_password = encrypt(password)
    end

    def encrypt(string)
        string
    end
end
Run Code Online (Sandbox Code Playgroud)

我发布了一个关于before_save不工作的上一个问题,事实证明我不小心做的是将我的encrypt_password写成:

def …
Run Code Online (Sandbox Code Playgroud)

ruby instance-variables self ruby-on-rails-3

17
推荐指数
1
解决办法
4687
查看次数

Rails 4 +设计使用电子邮件或用户名和强参数登录

我是RoR的新手并且坚持这个设计问题.我想允许用户使用电子邮件或用户名登录(使用用户名注册已经可以).

我按照这些文章: 第1条第2条,您可以看到以下结果:

application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password) }
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password, :remember_me) }
  end
end
Run Code Online (Sandbox Code Playgroud)

user.rb

class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:login]

  validates_uniqueness_of :username
  validates_presence_of :username
  validates :username, length: { in: 4..20 }

  def self.find_first_by_auth_conditions(warden_conditions)
    conditions = warden_conditions.dup
    if login = conditions.delete(:login)
      where(conditions).where(["lower(username) = :value OR lower(email) = :value", { …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise strong-parameters ruby-on-rails-4

11
推荐指数
1
解决办法
8690
查看次数

attr_accessible和强参数之间的区别

我刚才已经做了一点阅读attr_accessor,attr_accessible和强大的参数在几个不同的位置:

attr_accessor和attr_accessible之间的区别
如何在Rails 4中使用attr_accessible? http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html

而我正在考虑大规模任务:

http://code.tutsplus.com/tutorials/mass-assignment-rails-and-you--net-31695

我无法理解attr_accessible与强参数之间的区别.我对上述主题的理解并不是100%自信所以我可能会错过一些简单但我知道他们做类似的工作.

但是,attr_accessible强参数有什么区别?它们只是同一个东西的不同名称吗?我们为什么要从一个移到另一个?

任何信息表示赞赏.

attr-accessible strong-parameters ruby-on-rails-4

10
推荐指数
2
解决办法
5045
查看次数

Rails嵌套表单不能保存孩子

我的用户模型has_many响应.我正在尝试创建一个嵌套表单来创建一个具有三个子响应的新用户.我的代码看起来与Rails强制转换相同,但是虽然它会保存用户,但它不会保存它们的响应.任何人都可以看到有什么问题?

users_controller.rb

class UsersController < ApplicationController
  def new
    @user = User.new
    3.times{@user.responses.build}
    @responses = @user.responses
  end

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to @user #todo: where do we want to redirect?
    else
      render 'new'
    end
  end

  def show
    @user = User.find(params[:id])
    @responses = @user.responses
  end

  def index
    @users = User.all
  end

  private

    def user_params
      params.require(:user).permit(:username, :email, :responses)
    end
end
Run Code Online (Sandbox Code Playgroud)

user.rb

class User < ActiveRecord::Base
  attr_accessor :responses_attributes
  has_many :responses, :dependent => :destroy
  accepts_nested_attributes_for :responses#, :reject_if => lambda { |a| a[:content].blank? …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails has-many nested-forms

7
推荐指数
1
解决办法
2466
查看次数

attr_accessible如何在Rails中工作?

我刚才有一个关于Ruby on Rails和模型中的attr_accessible属性的一般性问题(Rails 3).有人可以解释那里应该定义哪些模型属性?我记得关于大规模任务的风险,虽然我在这方面不太了解...谢谢:)

ruby ruby-on-rails ruby-on-rails-3

5
推荐指数
2
解决办法
5440
查看次数

将属性附加到模型以便在Rails 3上临时使用

我有一个用户模型=> @user

我想添加新属性current_time@user供临时使用.

不想进行迁移以添加列(仅供临时使用):

@user.current_time = Time.now
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

NoMethodError (undefined method `current_time=' for #<User:0x007fd6991e1050>):
  app/controllers/carts_controller.rb:47:in `block in search_user'
  app/controllers/carts_controller.rb:45:in `search_user'
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

3
推荐指数
1
解决办法
1344
查看次数

Rails模型attr_accessor属性不保存?

这是我正在使用的结构:

应用程序/模型/ model.rb

class Model < ActiveRecord::Base
    attr_accessor :some_var
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ model_controller.rb

class ModelsController < ApplicationController
    def show
        @model = Model.find(params[:id])
        @other_var
        if @model.some_var.nil?
            @model.some_var = "some value"
            @other_var = "some value"
        else
            @other_var = @model.some_var
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

每当我运行此代码(例如show方法)时,if子句被评估为true(例如@ model.some_var == nil).我该如何解决这个问题?我对attr_accessor的工作方式有什么不妥吗?

model ruby-on-rails attr-accessor

2
推荐指数
1
解决办法
4205
查看次数

活动模型MassAssignmentSecurity错误

我遇到了一个错误:我正在开发一个带有Facebook集成的网络..我是ruby on rails的新手.你能解决我的问题吗?

ActiveModel::MassAssignmentSecurity::Error in SessionsController#create

Can't mass-assign protected attributes: name
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

class SessionsController < ApplicationController
  def create
    #render :json => request.env['omniauth.auth'].to_yaml
   auth = request.env['omniauth.auth']
    unless @auth = Authorization.find_from_hash(auth)
      @auth = Authorization.create_from_hash(auth, current_user)
    end

    self.current_user = @auth.user  
    render :text => "Welcome, #{current_user.name}."
   end
end
Run Code Online (Sandbox Code Playgroud)

这是我的用户模型:

class User < ActiveRecord::Base
  has_many :authorizations
  attr_accessor :name, :uid, :provider

  def self.create_from_hash!(hash)
    #create(:name => hash['user_info']['name'])
   create(:name => hash.info.name)
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的授权模式:

class Authorization < ActiveRecord::Base
  belongs_to :user
  validates_presence_of :user_id, :uid, :provider
  validates_uniqueness_of :uid, :scope => …
Run Code Online (Sandbox Code Playgroud)

omniauth ruby-on-rails-3 ruby-on-rails-3.2

2
推荐指数
1
解决办法
6691
查看次数