gpt4 book ai didi

ruby-on-rails - 使用范围验证值的唯一性-Ruby on Rails 5

转载 作者:行者123 更新时间:2023-12-04 05:39:25 25 4
gpt4 key购买 nike

我有带有模型posts的表Post和带有模型Language的表语言(列-id,post_id,语言)。帖子具有多种语言,而语言属于帖子。在帖子模型中,我有:

帖子模型:

has_many :languages
validates_associated :languages

语言模型:
belongs_to :post
validates_uniqueness_of :language, scope: :post_id

language是表语言中的列。

在posts_controller中允许使用language字段(强参数):
def post_params
params.require(:post).permit(:languages_attributes => [:language], ...)

这是用于创建帖子的表单的 View :
<%= form_for @post do |f| %>
.....
<%= f.fields_for :languages do |language| %>
<%=language.select :language, ['english', 'italian', 'french', 'spanish'], name: 'post[languages_attributes][][language]' %>
<%=language.select :language, ['english', 'italian', 'french', 'spanish'], name: 'post[languages_attributes][][language]' %>
<%=language.select :language, ['english', 'italian', 'french', 'spanish'], name: 'post[languages_attributes][][language]' %>
<%=language.select :language, ['english', 'italian', 'french', 'spanish'], name: 'post[languages_attributes][][language]' %>
<% end %>

这是创建发布方法:
@post= Post.new(post_params)
if @post.save
....

我想用帖子的范围(作用域::post_id)来验证语言的唯一性,并且每个帖子的示例只有一种英语语言。帖子可以使用多种语言,但可以使用不同的语言。

我尝试使用 validates_uniqueness_of :language, scope: :post_id,但是如果我添加两次英语(全部为小写字母),则不会有任何错误,并且会将数据插入到表中。

如何在当前帖子的范围内验证帖子语言的唯一性?

编辑:我看到这是Rails中的错误- GitHub,但我仍然需要解决方案。

最佳答案

如何验证Rails 5中两列的唯一性?
这是答案

validates :username, uniqueness: { scope: :group_id }

如果您需要记录是唯一的,请向记录添加唯一索引
class AddUniqueIndexToRoles < ActiveRecord::Migration[5.2]
def change
add_index :roles, [:username, :group_id], unique: true
end
end

关于ruby-on-rails - 使用范围验证值的唯一性-Ruby on Rails 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48266722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com