Tag: validation

validation失败类必须存在

我在Rails中遇到了很多关联的问题。 我发现了很多类似的问题,但我不能申请我的案子: 城市class级: class City < ApplicationRecord has_many :users end 用户class级: class User < ApplicationRecord belongs_to :city validates :name, presence: true, length: { maximum: 80 } validates :city_id, presence: true end 用户控制器: def create Rails.logger.debug user_params.inspect @user = User.new(user_params) if @user.save! flash[:success] = “Works!” redirect_to ‘/index’ else render ‘new’ end end def user_params params.require(:user).permit(:name, :citys_id) […]

Spork:如何刷新validation和其他代码?

我整天都在使用spork,大部分时间它都非常棒。 但是,我经常遇到一些问题,我需要重新启动Spork以便我的测试通过……现在我想知道它是否比它的价值更麻烦。 我是ruby的新手,所以有时我无法预测错误是由于刷新问题,还是因为我不熟悉Ruby和Rails而导致错误。 我需要将什么内容放入Spork.each_run块以便我的validation和其他内容刷新,以便我不必重新启动spork服务器? 谢谢

validation和测试Rails 3关联的完美方法(使用RSpec / Remarkable)?

我仍然很擅长在Rails 3中测试,我使用RSpec和Remarkable。 我已经阅读了很多post和一些书籍,但是在使用关联名称的时候,我仍然有点不确定。 class Project < ActiveRecord::Base has_many :tasks end class Task < ActiveRecord::Base belongs_to :project end 由于良好的实践,我想保护我的属性免受大规模任务: class Task < ActiveRecord::Base attr_accessible :project # Or is it :project_id?? belongs_to :project end 首先,我想确保一个项目在没有有效任务的情况下永远不会存在: class Task true # Which one is the… validates :project_id, :presence => true # …right way to go?? end 我还想确保分配的项目或项目ID始终有效: class Task […]

如何在Rails中validation时间? 限制用户每天发布一次

我试图将用户的post限制为每天一次,我正在考虑检查Time.now – last_post_time是否<(一天中的第二个)但是那会强制每个帖子之间的24小时。 我想做的只是在这个月每天允许一个post,所以如果用户在3月28日发帖,他就不能再发帖到29日。 但如果他在3月28日晚上10点发布,他可以在3月29日上午12:01再次发布。 我该怎么办? 编辑: 这是我的posts_controller,我可以获得一些关于如何重构这个的帮助吗? def create @post = current_user.posts.build(params[:supportpost]) if @post.save flash[:success] = “Your post was created!” redirect_to root_path else @feed_items = [] render ‘pages/home’ end end 我正在尝试这样的事情,但肯定是错的: def create post = @user.posts.find(:first, :conditions => [“STRFTIME(‘%d’, created_at) = ?”, Date.today.day]) if post @post = current_user.posts.build(params[:supportpost]) if @post.save flash[:success] = “Your post […]

如何获取ActiveRecordvalidation中配置的最大长度?

鉴于一个模型: class Person validates_lenght_of :name, :maximum => 50 end 我有一些显示倒计时的视图代码并强制执行此最大值。 但是我将数字50硬编码到该视图代码中。 有没有办法从模型中提取这个数字? 就像是: Person.maximum_length_of_name 我试过这个: Person.validators_on(:name) => [#true}, @klass=Trigger(id: integer, name: string, created_at: datetime, updated_at: datetime, user_id: integer, slug: string, last_update_by: integer)>, #, ##, :maximum=>50}>] 信息在那里,但我不知道如何提取它:

如何在Rails模型中validation两个值是否彼此不相等?

我有一个用户模型,它有一个电子邮件和一个密码字段。 为安全起见,这些可能并不相同。 我怎样才能在我的模型中定义它?

Ruby on Rails密码validation

所以我有一些有趣的密码validation要求: 当用户注册时,我希望他们必须输入密码并确认并且在6..40之间(GOT THIS WORKING 100%) 当用户更新其个人资料时,适用相同的validation规则(GOT THIS WORKING 100%) 当管理员添加用户时,他们只需输入一次密码就应该validation(NOT WORKIG) 当管理员编辑用户并且密码字段为空时,它不应更新密码,如果输入密码,则应validation密码。 (部分工作) validates :password, :presence => true, :confirmation => true, :length => {:within => 6..40}, :unless => :force_submit 我无法覆盖的唯一情况是,当管理员添加用户时,它未经过validation,当管理员编辑用户(并输入密码)时,它不会被validation。 :force_submit是从admin表单传入的,因此不validation密码。 (所以更新空密码的情况有效) 任何想法/魔术?

由于validation错误而无法保存模型时,不会丢失回形针附件

该场景是一个普通模型,其中包含回形针附件以及具有各种validation的其他一些列。 当由于与附件无关的validation错误而无法保存要创建对象的表单时,会保留字符串等列并为用户保留预填充,但选择上载的文件完全丢失且必须由用户重新选择。 在模型validation错误的情况下,是否有标准方法来保留附件? 这似乎是一个非常常见的用例。 在没有所有者的情况下保存文件然后在成功保存之后重新连接到对象的解决方案似乎是不优雅的,所以我希望避免这种情况。

使用Railsvalidation助手:消息,但希望它没有在消息中列出列名

使用Railsvalidation助手 – validates_xxx_of :the_column, :message => “my message” 将生成validation消息: the_column我的消息 有没有办法关闭列名称的包含? (用任何validation助手方法替换xxx)

无法validation(检查)paypal帐户

用户sign_up时,我需要validationPayPal帐户。 我有function(来源 – http://curry.byteally.com/finding-verification-status-of-a-paypal-account-ruby-on-rails-paypal-adaptive-accounts-getverifiedstatus/ ) 我输入了我的凭证并改变了。 我把它作为我的static_pages_controller(现在)。 def verify_paypal … //change: if res.status == 200 @xml = XmlSimple.xml_in(res.content) #check if the status node exists in the xml if @xml[‘accountType’]!=nil account_type = @xml[‘accountType’][0] if account_type.to_s() == “Business” render :text => “Business account!” elseif account_type.to_s() == “Premier” render :text => “Premier Account!” elseif account_type.to_s() == “Personal” render […]