数组属性

时间:2017-08-01 03:32:02

标签: mysql ruby-on-rails ruby activerecord

我的模型course.rb pre_courses是一个数组。

class Course < ActiveRecord::Base
  serialize :pre_courses, Array
end

现在我想检查Activerecord或原始SQL(我正在使用MySQL)的任何课程是否存在course pre_course,例如Course.where("pre_courses INCLUDEs self.id“。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

序列化数组只是数据库中的一个字符串,因此请尝试使用LIKE,例如:

Course.where("pre_courses LIKE ?", "% #{self.id}\n%")

请注意,序列化数组在每个项之前添加一个空格,之后添加一个新行,因此在插值字符串之前添加了空格,最后添加了\n

答案 1 :(得分:1)

听起来pre_course实际上是常规coursecourse可以有很多pre_coursespre_course可以属于许多courses has_many through }}。自我引用CoursePreCourse关系是可能的,并且可以使您更灵活地处理数据,而不是将其序列化为数组。

您需要一个联接模式我会致电course_id。它将包含pre_course_idpre_course_id列。 courses将成为class CreateCoursePreCourses < ActiveRecord::Migration[5.1] def change create_table :course_pre_courses do |t| t.references :course, foreign_key: true t.references :pre_course, foreign_key: { to_table: :courses } t.timestamps end end end class CoursePreCourse < ApplicationRecord belongs_to :course belongs_to :pre_course, class_name: 'Course' end class Course < ApplicationRecord # A straight-forward has_many :through association for a course that has_many :pre_courses has_many :course_pre_courses has_many :pre_courses, through: :course_pre_courses # A little coercion is necessary to set up the association as a pre_course that has_many :courses has_many :pre_course_courses, class_name: 'CoursePreCourse', foreign_key: :pre_course_id has_many :courses, through: :pre_course_courses end 表中记录的外键。

courses

现在,您可以使用pre_courses检索course course.pre_courses course pre_course。如果您想查看coursespre_course.courses其他course course的{​​{1}}。同样,您可以使用pre_coursescourse.pre_courses << pre_coursepre_course.courses << course public boolean showingFirst = true; if (showingFirst) { //code here for set needed image on first click showingFirst = false; } else { //code here for set needed image on Second click showingFirst = true; } class UserDetails{ var name : String var email : String var mobile: String var password : String var confirmPassword : String init(name:String, email:String, mobile:String, password:String, confirmPassword: String) { self.name = name self.email = email self.mobile = mobile self.password = password self.confirmPassword = confirmPassword } init(){ self.email = "" self.password = "" self.mobile = "" self.name = "" self.confirmPassword = "" } } class Data: NSObject { static let sharedInstance = Data() var stored : userData! func Get(data : userData) { stored = data } var details = [UserDetails]() let dataStore = UserDetails(name: name!, email: email!, mobile: mobileNumber!, password: password!, confirmPassword: confirmPassword!) details.append(dataStore) Data.sharedInstance.Get(data: details) 添加android:background="@null"

你是否曾经多次说过一句话就失去了意义?