Tag: 模型

Rails after_initialize只在“新”

我有以下2个模型 class Sport < ActiveRecord::Base has_many :charts, order: "sortWeight ASC" has_one :product, :as => :productable accepts_nested_attributes_for :product, :allow_destroy => true end class Product < ActiveRecord::Base belongs_to :category belongs_to :productable, :polymorphic => true end 没有产品的运动就不能存在,所以在我的sports_controller.rb我有: def new @sport = Sport.new @sport.product = Product.new … end 我尝试使用after_initialize将产品的创build移动到运动模型: after_initialize :create_product def create_product self.product = Product.new end 我很快就知道,每当一个模型被实例化时(即从一个find调用), after_initialize调用after_initialize […]

Rails before_validation去除空白的最佳实践

我希望我的用户模型在保存前清理一些input。 现在一些简单的空白剥离将会做。 例如,为了避免人们注册“哈利”,假装为“哈利”。 我认为在validation之前做这个剥离是一个好主意,所以validates_uniqueness_of可以避免意外的重复。 class User < ActiveRecord::Base has_many :open_ids validates_presence_of :name validates_presence_of :email validates_uniqueness_of :name validates_uniqueness_of :email validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[az]{2,})\Z/i before_validation :strip_whitespace, :only => [:name, :email, :nick] private def strip_whitespace(value) value.responds_to?('strip') ? value.strip : value end end 但是,这段代码带有一个错误:ArgumentError:错误的参数个数(0代表1)。 我认为callback将通过值。 另外:这是剥离实际上是一个好主意? 还是应该在空间上进行validation,并告诉用户“Harry”包含无效的空格(我想允许“Harry Potter”而不是“Harry \ s \ sPotter”)。 编辑:正如在评论中指出的,我的代码是错误的(这就是为什么我问这个问题)。 请确保您阅读接受的答案,除了正确的代码我的问题,并避免我犯的同样的错误。

Django与其他字段的ManyToMany关系

我想存储一些额外的信息,自动创buildManyToMany连接表。 我将如何在Django中做到这一点? 在我的情况下,我有两个表:“员工”和“项目”。 我想存储的是每个员工在每个项目中每工作小时收到多less,因为这些值是不一样的。 那么,我该怎么做呢? 发生在我身上的是,而不是“ManyToManyField”方法,显式创build第三个类/表来存储这些新的信息,并使用“ForeignKey”方法设置其与“Employees”和“Projects”的关系。 我很确定它会起作用,但是这是最好的方法吗?

Django的ModelForm unique_togethervalidation

我有一个Django模型,看起来像这样。 class Solution(models.Model): ''' Represents a solution to a specific problem. ''' name = models.CharField(max_length=50) problem = models.ForeignKey(Problem) description = models.TextField(blank=True) date = models.DateTimeField(auto_now_add=True) class Meta: unique_together = ("name", "problem") 我使用表单来添加看起来像这样的模型: class SolutionForm(forms.ModelForm): class Meta: model = Solution exclude = ['problem'] 我的问题是, SolutionForm不validationSolution的unique_together约束,因此,它在尝试保存表单时返回一个IntegrityError 。 我知道我可以使用validate_unique手动检查这一点,但我想知道是否有任何方式来捕获表单validation,并自动返回一个表单错误。 谢谢。

创build如果不存在

我有一个Django应用程序,从Web API读取数据并将其放入数据库。 有没有办法从一个模式创build一个新的对象,但防止重复的exception,如果对象已经存在? 换句话说,有没有办法保存一个对象,但是如果它已经存在,就什么也不做?

如何从rails模块访问URL助手

我有一个function模块。 它驻留在/lib/contact.rb中: module Contact class << self def run(current_user) … end end end 我想要访问模块内部的“user_path”这样的URL助手。 我怎么做?

Ruby on Rails:errors.add_to_base vs. errors.add

我已经读了errors.add_to_base应该用于与对象相关的错误,而不是一个特定的属性。 我很难概念化这意味着什么。 有人可以提供一个什么时候我想要使用每个? 例如,我有一个乐队模型,每个乐队都有一个stream派。 当我validationstream派的存在时,如果stream派丢失,应该将错误添加到基地? 越多的例子越好 谢谢!

任何大于0的数的正则expression式?

将validation应用于MVC中的模型,并希望使用正则expression式。 试图validation我的模型上的ID在提交时大于0。 我不熟悉正则expression式…有人可以帮我吗? 谢谢

Magento – 在控制器和块之间传递数据

真的很快又简单的问题,但我找不到一个体面的答案 – 什么是从控制器传递数据到Magento块的最佳方式。 Incase它有所不同,我加载布局如下: $this->loadLayout(array('default', 'myModule_default')); $this->_initLayoutMessages('customer/session') ->_initLayoutMessages('catalog/session') ->renderLayout(); 我应该补充一点,我一直在使用registry如下: 在控制器中: Mage::register('data', $data); 在块中: $data = Mage::registry('data'); 不知道这是否是最好的办法。

如何validationRuby on Rails中一对id的唯一性?

假设在Ruby中进行以下数据库迁移: create_table:question_votes do | t | t.integer:user_id t.integer:question_id t.integer:投票 t.timestamps 结束 进一步假设我希望DB中的行包含唯一的(user_id,question_id)对。 为了实现这个目标,什么才是正确的灰尘? validates_uniqueness_of:user_id,:question_id 似乎只是简单地让用户id唯一的行,并通过问题id唯一,而不是唯一的一对。