我有三个类: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语句以查看是否阻止添加错误,但事实并非如此.似乎模型上有错误并不能防止破坏发生.
所以我的问题是,有什么方法可以防止使用验证发生破坏?我意识到我可以定义一个仅在满足上述条件时才会销毁的方法,但似乎验证方法是一种更优雅的解决方案.
我的应用程序中有一些视图,它引用了我的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路径是正确的.
我一直在榆树中经常遇到一个问题,我的功能取决于多个可能的值是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) 我有几个不同的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?还有另一种方法吗?我希望能够在开发期间更改文件而无需重新启动我的服务器,但这更像是一种需要.
我正在寻找用引号解码 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)
我有一个使用attr_readonly保护的属性,以防止用户改变字段.
我希望能够使用实例方法更改它.这可能吗?
我想在我的Rails 3.1应用程序中将我的javascripts分成单独的子目录.
例如,我在/ app/assets/javascripts中有一个/ modules目录
要么需要目录的所有内容,要么单独要求每个文件的方法都会有所帮助.
编辑:为了澄清,我想从我的application.js coffeescript文件中执行此操作.
coffeescript ×2
elm ×2
assets ×1
attributes ×1
extend ×1
javascript ×1
json ×1
ruby ×1
validation ×1