rails 동적 설정으로 scope를 설정하고 싶어요.
8856 단어 Rails
개시하다
모델에는 Rails로 역할 영역을 쓰지만 역할 영역의 수가 너무 많습니다.
그래서 범위를 동태적으로 정의할 수 있다면 스스로 해 보겠다고 생각했다.
구체적 예
구체적인 예로 문장에 언어 설정이 있다고 가정하자.
모델이 이런 느낌이에요.
그리고 이 랑은 인덱스형으로 엔um을 사용합니다.
그래서 모델스/article.대상
article.rbclass DataCollect < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
이런 느낌으로.
이렇게 하면article을 만들 때lang을 설정하면 그 글의 언어를 알 수 있다.
scope 만들기
예를 들면 스코프를 만들 때.Article.ja.all
일본에서 글을 쓸 수 있도록 모델스/article을 사용하세요.달성scope :ja, -> {where(lang: :ja)}
이렇게 하면 실현할 수 있다.
그러나 이번 예와 같이 일곱 가지 언어가 있다
models/article.rbscope :ja, -> {where(lang: :ja)}
scope :en, -> {where(lang: :en)}
scope :ar, -> {where(lang: :ar)}
scope :de, -> {where(lang: :de)}
scope :el, -> {where(lang: :el)}
scope :eo, -> {where(lang: :eo)}
scope :es, -> {where(lang: :es)}
이렇게 쓰면 거추장스러울 것이다.
더 늘리면 더 방해가 되니까 이걸 더 짧게 쓰고 싶어요!
class_eval 썼어요.
아무튼 클라스.eval을 사용하여 Artical의 모델에 scope를 정의합니다.
사용법이 이렇게 된 느낌.Article.class_eval { scope ja, -> {where(lang: ja)}
이렇게 하면 scope의 설정을 할 수 있고 그 다음에 배열 순환을 하면 완성된다.Lang = [ja, en, ar, de, el, eo, es, fr]
Lang.each do |l|
Article.classs_eval { scope l, -> {where(lang: l)}
end
이렇게 하시면 됩니다.
다시 해봐.
언어의 파일은config/localles에 있고, 그 파일의 정의scope를 보고 싶습니다.
뭐랄까
예를 들어config/locallesen.yml
ja.yml
en.yml
만약 이런 서류가 있다면 보고 엔자, 엔의 범위를 만들 것이다.
config/localles의 파일 이름을 얻기 위해Dir.chdir("/mnt/c/users/owner/desktop/app_name/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
이렇게 하면 config/localles의 파일 이름을 얻을 수 있습니다.
이렇게 하면 config/localles에서 언어 파일의 언어 범위를 만들 수 있습니다
전체를 완성하는 것은 여기에 있다.
class Article < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
Dir.chdir("/mnt/c/users/owner/desktop/latest_news/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
lang.each do |l|
Article.class_eval { scope l, -> {where(lang: l)}}
end
오히려 이해가 안 되네요(웃음)
끝맺다
메리 크리스마스.
Reference
이 문제에 관하여(rails 동적 설정으로 scope를 설정하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/48e2fc41dd7f7a5ad7a4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
구체적인 예로 문장에 언어 설정이 있다고 가정하자.
모델이 이런 느낌이에요.
그리고 이 랑은 인덱스형으로 엔um을 사용합니다.
그래서 모델스/article.대상
article.rb
class DataCollect < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
이런 느낌으로.이렇게 하면article을 만들 때lang을 설정하면 그 글의 언어를 알 수 있다.
scope 만들기
예를 들면 스코프를 만들 때.Article.ja.all
일본에서 글을 쓸 수 있도록 모델스/article을 사용하세요.달성scope :ja, -> {where(lang: :ja)}
이렇게 하면 실현할 수 있다.
그러나 이번 예와 같이 일곱 가지 언어가 있다
models/article.rbscope :ja, -> {where(lang: :ja)}
scope :en, -> {where(lang: :en)}
scope :ar, -> {where(lang: :ar)}
scope :de, -> {where(lang: :de)}
scope :el, -> {where(lang: :el)}
scope :eo, -> {where(lang: :eo)}
scope :es, -> {where(lang: :es)}
이렇게 쓰면 거추장스러울 것이다.
더 늘리면 더 방해가 되니까 이걸 더 짧게 쓰고 싶어요!
class_eval 썼어요.
아무튼 클라스.eval을 사용하여 Artical의 모델에 scope를 정의합니다.
사용법이 이렇게 된 느낌.Article.class_eval { scope ja, -> {where(lang: ja)}
이렇게 하면 scope의 설정을 할 수 있고 그 다음에 배열 순환을 하면 완성된다.Lang = [ja, en, ar, de, el, eo, es, fr]
Lang.each do |l|
Article.classs_eval { scope l, -> {where(lang: l)}
end
이렇게 하시면 됩니다.
다시 해봐.
언어의 파일은config/localles에 있고, 그 파일의 정의scope를 보고 싶습니다.
뭐랄까
예를 들어config/locallesen.yml
ja.yml
en.yml
만약 이런 서류가 있다면 보고 엔자, 엔의 범위를 만들 것이다.
config/localles의 파일 이름을 얻기 위해Dir.chdir("/mnt/c/users/owner/desktop/app_name/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
이렇게 하면 config/localles의 파일 이름을 얻을 수 있습니다.
이렇게 하면 config/localles에서 언어 파일의 언어 범위를 만들 수 있습니다
전체를 완성하는 것은 여기에 있다.
class Article < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
Dir.chdir("/mnt/c/users/owner/desktop/latest_news/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
lang.each do |l|
Article.class_eval { scope l, -> {where(lang: l)}}
end
오히려 이해가 안 되네요(웃음)
끝맺다
메리 크리스마스.
Reference
이 문제에 관하여(rails 동적 설정으로 scope를 설정하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/48e2fc41dd7f7a5ad7a4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Article.ja.all
scope :ja, -> {where(lang: :ja)}
scope :ja, -> {where(lang: :ja)}
scope :en, -> {where(lang: :en)}
scope :ar, -> {where(lang: :ar)}
scope :de, -> {where(lang: :de)}
scope :el, -> {where(lang: :el)}
scope :eo, -> {where(lang: :eo)}
scope :es, -> {where(lang: :es)}
아무튼 클라스.eval을 사용하여 Artical의 모델에 scope를 정의합니다.
사용법이 이렇게 된 느낌.
Article.class_eval { scope ja, -> {where(lang: ja)}
이렇게 하면 scope의 설정을 할 수 있고 그 다음에 배열 순환을 하면 완성된다.Lang = [ja, en, ar, de, el, eo, es, fr]
Lang.each do |l|
Article.classs_eval { scope l, -> {where(lang: l)}
end
이렇게 하시면 됩니다.다시 해봐.
언어의 파일은config/localles에 있고, 그 파일의 정의scope를 보고 싶습니다.
뭐랄까
예를 들어config/locallesen.yml
ja.yml
en.yml
만약 이런 서류가 있다면 보고 엔자, 엔의 범위를 만들 것이다.
config/localles의 파일 이름을 얻기 위해Dir.chdir("/mnt/c/users/owner/desktop/app_name/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
이렇게 하면 config/localles의 파일 이름을 얻을 수 있습니다.
이렇게 하면 config/localles에서 언어 파일의 언어 범위를 만들 수 있습니다
전체를 완성하는 것은 여기에 있다.
class Article < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
Dir.chdir("/mnt/c/users/owner/desktop/latest_news/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
lang.each do |l|
Article.class_eval { scope l, -> {where(lang: l)}}
end
오히려 이해가 안 되네요(웃음)
끝맺다
메리 크리스마스.
Reference
이 문제에 관하여(rails 동적 설정으로 scope를 설정하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/48e2fc41dd7f7a5ad7a4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
en.yml
ja.yml
en.yml
Dir.chdir("/mnt/c/users/owner/desktop/app_name/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
class Article < ApplicationRecord
enum lang: {ja: 0, en: 1, ar: 2, de: 3,el: 4, eo: 5, es: 6, fr: 7}
end
Dir.chdir("/mnt/c/users/owner/desktop/latest_news/config/locales")
lang = Dir.glob("*").map {|l| l.match(/../)[0] }
lang.each do |l|
Article.class_eval { scope l, -> {where(lang: l)}}
end
Reference
이 문제에 관하여(rails 동적 설정으로 scope를 설정하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sibakenY/items/48e2fc41dd7f7a5ad7a4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)