小编tan*_*man的帖子

在销毁之前验证

我有三个类:School,Account,和Administratorship.

学校

has_many :administatorships
has_many :administrators, :through => :administratorships
Run Code Online (Sandbox Code Playgroud)

帐户

has_many :administratorships
Run Code Online (Sandbox Code Playgroud)

管理人的职位

belongs_to :account
belongs_to :school

before_destroy :confirm_presence_of_alternate_administratorship_in_school

protected

def confirm_presence_of_alternate_administratorship_in_school
    unless school.administrators.count(["administratorships.account_id != #{id}"]) > 0
        errors.add_to_base "The school must have at least one administrator"
    end
end
Run Code Online (Sandbox Code Playgroud)

现在,我想要发生的是当我调用destroy一个实例时Administratorship,它会向模型添加错误并防止模型的破坏.我已删除该unless语句以查看是否阻止添加错误,但事实并非如此.似乎模型上有错误并不能防止破坏发生.

所以我的问题是,有什么方法可以防止使用验证发生破坏?我意识到我可以定义一个仅在满足上述条件时才会销毁的方法,但似乎验证方法是一种更优雅的解决方案.

validation ruby-on-rails

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

使用Rails 3.1和Coffeescript"找不到变量"错误

我的应用程序中有一些视图,它引用了我的application.js文件,其中包含我在整个应用程序中使用的函数.

在使用3.1的边缘版本之后,我刚刚安装了Rails 3.1版本候选版本.直到我安装RC我没有任何问题,但现在我收到此错误:

ReferenceError:找不到变量:indicator_tag

indicator_tag是我在application.js中定义的函数.我在javascript文件中注意到的唯一区别是现在我的所有函数都包含在:

(function() { ... }).call(this);
Run Code Online (Sandbox Code Playgroud)

我理解这是针对变量范围的吗?但它可能阻止我的页面使用这些变量吗?在有人要求之前,我确保我的include标签中的javascript路径是正确的.

javascript ruby-on-rails coffeescript

22
推荐指数
2
解决办法
5771
查看次数

是否有一种不那么冗长的方式来解开榆树中的可能值

我一直在榆树中经常遇到一个问题,我的功能取决于多个可能的值是Just.编写此代码有一种不那么冗长的方式:

commandIf apples bananas oranges =
        case apples of
            Just apples_ ->
                case bananas of
                    Just bananas_ ->
                        case oranges of
                            Just oranges_ ->
                                someCommand apples_ bananas_ oranges_

                            Nothing ->
                                Cmd.none

                    Nothing ->
                        Cmd.none

            Nothing ->
                Cmd.none
Run Code Online (Sandbox Code Playgroud)

functional-programming elm

7
推荐指数
2
解决办法
531
查看次数

如何从app/modules扩展ActiveRecord?

我有几个不同的acts_as _...自定义类方法我想在我的应用程序中使用.我希望这些方法的代码位于app/modules目录中的文件中.

我一直无法做到这一点.

例如,我有一个文件:app/modules/acts_as_lockable

module ActsAsLockable

    def acts_as_lockable
        before_create :set_lock

        include InstanceMethods
    end

    module InstanceMethods
        protected

        def set_lock
            now = Time.now.to_s
            self.lock = Digest::SHA1.hexdigest(now)
        end
    end

end

ActiveRecord::Base.extend ActsAsLockable
Run Code Online (Sandbox Code Playgroud)

并在application.rb

config.autoload_paths += %W(#{config.root}/app/modules)
Run Code Online (Sandbox Code Playgroud)

当我尝试加载调用acts_as_lockable的模型时,我收到以下错误:

NameError:未定义的局部变量或方法`acts_as_lockable'

我的猜测是我不应该自动加载模块文件夹,因为我扩展它时已经加载了ActiveRecord?还有另一种方法吗?我希望能够在开发期间更改文件而无需重新启动我的服务器,但这更像是一种需要.

ruby metaprogramming ruby-on-rails extend ruby-on-rails-3

6
推荐指数
1
解决办法
1662
查看次数

Elm:解码在 JSON 中编码为字符串的浮点数

我正在寻找用引号解码 JSON 中的浮点数。

import Html exposing (text)    
import Json.Decode as Decode

type alias MonthlyUptime = {
  percentage: Maybe Float
}

decodeMonthlyUptime =
  Decode.map MonthlyUptime
    (Decode.field "percentage" (Decode.maybe Decode.float))        

json = "{ \"percentage\": \"100.0\" }"   
decoded = Decode.decodeString decodeMonthlyUptime json  

main = text (toString decoded)
Run Code Online (Sandbox Code Playgroud)

此处执行)

这输出Ok { percentage = Nothing }.

我对围绕自定义解码器的文档感到相当困惑,而且看起来其中一些已经过时(例如,对 的引用Decode.customDecoder

json functional-programming elm

5
推荐指数
1
解决办法
513
查看次数

我怎样才能覆盖attr_readonly?

我有一个使用attr_readonly保护的属性,以防止用户改变字段.

我希望能够使用实例方法更改它.这可能吗?

attributes ruby-on-rails

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

如何在Rails 3.1中要求/ app/assets/javascripts的子目录

我想在我的Rails 3.1应用程序中将我的javascripts分成单独的子目录.

例如,我在/ app/assets/javascripts中有一个/ modules目录

要么需要目录的所有内容,要么单独要求每个文件的方法都会有所帮助.

编辑:为了澄清,我想从我的application.js coffeescript文件中执行此操作.

assets ruby-on-rails coffeescript ruby-on-rails-3.1

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